package com.lailai.controller;

//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import com.lailai.constant.ErrorCode;
import com.lailai.domainservice.response.SingleResponse;
import com.lailai.entity.vo.VersionVO;
import com.lailai.service.VersionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;

/**
 * 版本管理控制器
 * 提供版本相关的 RESTful API
 */
@RestController
@RequestMapping("/api/versions")
public class VersionController {

    private final VersionService versionService;

    @Autowired
    public VersionController(VersionService versionService) {
        this.versionService = versionService;
    }

//    /**
//     * 创建新版本
//     *
//     * @param versionDTO 版本数据
//     * @return 创建后的版本DTO
//     */
//    @PostMapping
//    public ResponseEntity<VersionDTO> createVersion(@Valid @RequestBody VersionDTO versionDTO) {
//        VersionDTO createdVersion = versionService.createVersion(versionDTO);
//        return ResponseEntity.ok(createdVersion);
//    }
//
//    /**
//     * 获取所有版本列表
//     *
//     * @return 版本DTO列表
//     */
//    @GetMapping
//    public ResponseEntity<List<VersionDTO>> getAllVersions() {
//        List<VersionDTO> versions = versionService.getAllVersions();
//        return ResponseEntity.ok(versions);
//    }
//

    /**
     * 分页查询版本
     *
     * @param pageNum  当前页码（从1开始）
     * @param pageSize 每页条数
     * @return 分页后的版本DTO
     */
    @GetMapping("/page")
    public SingleResponse<Page<VersionVO>> getVersions(
            @RequestParam(defaultValue = "1") int pageNum,
            @RequestParam(defaultValue = "10") int pageSize) {
        try {
            Page<VersionVO> versions = versionService.selectVersions(pageNum, pageSize);
            return SingleResponse.of(versions);
        } catch (Exception e) {
            return SingleResponse.ofFailure(
                    String.valueOf(ErrorCode.SYSTEM_ERROR.getCode()),
                    "获取版本列表失败: " + e.getMessage()
            );
        }
    }
//
//    /**
//     * 根据ID获取版本详情
//     *
//     * @param id 版本ID
//     * @return 版本DTO
//     */
//    @GetMapping("/{id}")
//    public ResponseEntity<VersionDTO> getVersionById(@PathVariable Long id) {
//        VersionDTO version = versionService.getVersionById(id);
//        return ResponseEntity.ok(version);
//    }
//
//    /**
//     * 根据版本号获取版本详情
//     *
//     * @param versionNumber 版本号
//     * @return 版本DTO
//     */
//    @GetMapping("/number/{versionNumber}")
//    public ResponseEntity<VersionDTO> getVersionByVersionNumber(@PathVariable String versionNumber) {
//        VersionDTO version = versionService.getVersionByVersionNumber(versionNumber);
//        return ResponseEntity.ok(version);
//    }
//
//    /**
//     * 更新版本信息
//     *
//     * @param id         版本ID
//     * @param versionDTO 更新的版本数据
//     * @return 更新后的版本DTO
//     */
//    @PutMapping("/{id}")
//    public ResponseEntity<VersionDTO> updateVersion(
//            @PathVariable Long id,
//            @Valid @RequestBody VersionDTO versionDTO) {
//        VersionDTO updatedVersion = versionService.updateVersion(id, versionDTO);
//        return ResponseEntity.ok(updatedVersion);
//    }
//
//    /**
//     * 删除版本
//     *
//     * @param id 版本ID
//     * @return 204 No Content
//     */
//    @DeleteMapping("/{id}")
//    public ResponseEntity<Void> deleteVersion(@PathVariable Long id) {
//        versionService.deleteVersion(id);
//        return ResponseEntity.noContent().build();
//    }
//
//    /**
//     * 获取所有公开版本
//     *
//     * @return 公开版本DTO列表
//     */
//    @GetMapping("/public")
//    public ResponseEntity<List<VersionDTO>> getAllPublicVersions() {
//        List<VersionDTO> publicVersions = versionService.getAllPublicVersions();
//        return ResponseEntity.ok(publicVersions);
//    }
//
//    /**
//     * 获取最新的公开版本
//     *
//     * @return 最新公开版本DTO
//     */
//    @GetMapping("/latest")
//    public ResponseEntity<VersionDTO> getLatestPublicVersion() {
//        VersionDTO latestVersion = versionService.getLatestPublicVersion();
//        return ResponseEntity.ok(latestVersion);
//    }
//
//    /**
//     * 检查版本号是否存在
//     *
//     * @param versionNumber 版本号
//     * @return 200 OK（存在）或 404 Not Found（不存在）
//     */
//    @GetMapping("/exists/{versionNumber}")
//    public ResponseEntity<Void> checkVersionExists(@PathVariable String versionNumber) {
//        boolean exists = versionService.existsByVersionNumber(versionNumber);
//        return exists ? ResponseEntity.ok().build() : ResponseEntity.notFound().build();
//    }
}
